import java.sql.*;
import java.util.Scanner;

/**
 * JDBC实现登录功能
 * 使用预编译SQL实现,预防SQL注入攻击
 * 1.先将SQL语句发送给数据库,让数据库生成执行计划,理解SQL语句执行意图(?占位)
 *   sql = SELECT username,password,nickname,age FROM userinfo WHERE username=? AND password=?
 * 2.创建预编译SQL语句执行对象(prepareStatement(sql))
 * 3.设置预编译SQL语句中 ? 的值
 * 4.执行预编译SQL语句
 */
public class JDBCLogin2 {
    public static void main(String[] args) {
        //接收用户输入
        Scanner scanner = new Scanner(System.in);
        System.out.println("登录功能");
        System.out.println("请输入用户名:");
        String username = scanner.nextLine();
        System.out.println("请输入密码:");
        String password = scanner.nextLine();
        // 数据库操作[注意:自动关闭特性]
        try (Connection connection = DBUtil.getConnection();){
            //1.创建预编译SQL执行对象: ?代表占位
            String sql = "SELECT username,password,nickname,age FROM tedu.userinfo WHERE username=? AND password=?";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            // 2.设置 ? 的值
            preparedStatement.setString(1, username);
            preparedStatement.setString(2, password);
            // 3.执行[注意:不需要放参数-SQL语句]
            ResultSet resultSet = preparedStatement.executeQuery();
            // 4.判断结果
            if (resultSet.next()){
                String nickname = resultSet.getString("nickname");
                System.out.println("欢迎你," + nickname);
            }else{
                System.out.println("用户名或密码错误");
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}
